package cn.changeforyou.web.dao.mybatis.ext.metaInfo;

import org.apache.ibatis.mapping.SqlCommandType;

/**
 * 映射器的ResultType类型
 * 用于在select,update等大分类下面细分
 *
 * @author zhyu
 * @version 1.0
 * @date 2022/2/14 20:06
 */
public enum MappedStatementResultType {

    /**
     * 1. 普通 返回值是普通非集合对象, Entity selectOne(id); 需要完全支持
     * 2. 视图 Vo selectOne(id); 需啊支持
     * 3. map Map<String, Object> selectOne(id); 需要支持
     * 4. 普通集合 List<Entity> selectList(condition); 需要完全支持
     * 5. 视图集合 List<Vo> selectList(condition); 需要支持
     * 6. ListMap List<Map<String,Object>> selectList(condition) 需要支持
     * 7. count 需要支持
     */

    selectEntity(SqlCommandType.SELECT, "查询返回单个实体类"),
    selectVO(SqlCommandType.SELECT, "查询返回单个视图类"),
    selectMap(SqlCommandType.SELECT, "查询返回单个Map类"),
    selectEntities(SqlCommandType.SELECT, "查询返回多个实体类"),
    selectVOs(SqlCommandType.SELECT, "查询返回多个视图类"),
    selectMaps(SqlCommandType.SELECT, "查询返回多个Map类"),
    count(SqlCommandType.SELECT, "返回数量"),
    ;

    MappedStatementResultType(SqlCommandType sqlCommandType, String desc) {
        this.sqlCommandType = sqlCommandType;
        this.desc = desc;
    }

    /**
     * 大类型
     */
    private SqlCommandType sqlCommandType;
    /**
     * 描述
     */
    private String desc;
}
